import BaseType from "../../../model/base/base-type.ts"
import {ProgramEls, TableEls} from "../../../core"

/**
 * 功能框
 */
class TableManager<Model> {
    /**
     * 表格样式
     */
    props?: TablePropsModel
    /**
     * 分页
     */
    page?: TablePageModel
    /**
     * 是否开启多选
     */
    selection?: BaseType.bool
    /**
     * 操作栏
     */
    operation?: TableOperationModel<Model>
    /**
     * 渲染列表
     */
    els: TableEls<Model>[]

    /**
     * 构造函数
     */
    constructor(els: TableEls<Model>[]) {
        this.els = els
    }
}

/**
 * 操作栏模型
 */
interface TableOperationModel<Model> {
    /**
     * 长度
     */
    width?: number
    /**
     * 绑定样式
     */
    props?: TableOperationPropsModel
    /**
     * 绑定数据前操作z
     */
    bindData?: (data: Model) => Model
    /**
     * 提交数据前操作
     */
    beforeSubmit?: (data: Model) => Model
    /**
     * 操作栏子项
     */
    els: ProgramEls<Model>[]
}

/**
 * 表格样式模型
 */
interface TablePropsModel {
    /**
     * 是否开启边框
     */
    border?: BaseType.bool
    /**
     * 是否开启斑马纹
     */
    stripe?: BaseType.bool
}

/**
 * 表格页码模型
 */
interface TablePageModel {
    /**
     * 是否开启
     */
    enable?: BaseType.bool
    /**
     * 每页显示多少条数据
     */
    pageSize?: number
}

/**
 * 操作栏样式
 */
interface TableOperationPropsModel {
    /**
     * 锁定
     */
    fixed: BaseType.position
}

/**
 * 暴露
 */
export default TableManager


